home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / 3DView / Sources / 3DWindows.e < prev   
Encoding:
Text File  |  1995-04-03  |  22.4 KB  |  363 lines

  1. /*"Libraries Proc"*/
  2. /*"p_OpenLibraries() :Ouvre les libraries."*/
  3. PROC p_OpenLibraries() HANDLE 
  4.     IF (intuitionbase:=OpenLibrary('intuition.library',37))=NIL THEN Raise(ER_INTUITIONLIB)
  5.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN Raise(ER_GADTOOLSLIB)
  6.     IF (gfxbase:=OpenLibrary('graphics.library',37))=NIL THEN Raise(ER_GRAPHICSLIB)
  7.     IF (diskfontbase:=OpenLibrary('diskfont.library',37))=NIL THEN Raise(ER_DISKFONTLIB)
  8.     IF (reqtoolsbase:=OpenLibrary('reqtools.library',37))=NIL THEN Raise(ER_REQTOOLSLIB)
  9.     IF (mathtransbase:=OpenLibrary('mathtrans.library',37))=NIL THEN Raise(ER_MATHTRANSLIB)
  10.     IF (rexxsysbase:=OpenLibrary('rexxsyslib.library',36))=NIL THEN Raise(ER_REXXSYSLIBLIB)
  11.     Raise(ER_NONE)
  12. EXCEPT
  13.     RETURN exception
  14. ENDPROC
  15. /**/
  16. /*"p_CloseLibraries() :Ferme les libraries."*/
  17. PROC p_CloseLibraries()  
  18.     IF rexxsysbase THEN CloseLibrary(rexxsysbase)
  19.     IF mathtransbase THEN CloseLibrary(mathtransbase)
  20.     IF reqtoolsbase THEN CloseLibrary(reqtoolsbase)
  21.     IF diskfontbase THEN CloseLibrary(diskfontbase)
  22.     IF gfxbase THEN CloseLibrary(gfxbase)
  23.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  24.     IF intuitionbase THEN CloseLibrary(intuitionbase)
  25. ENDPROC
  26. /**/
  27. /**/
  28. /*"Screen Proc"*/
  29. /*"p_SetUpScreen() :Ouvre l'écran."*/
  30. PROC p_SetUpScreen() HANDLE 
  31.     DEF ps:PTR TO screen
  32.     DEF t
  33.     /*==== Install Fonts ====*/
  34.     tattr:=['ruby.font',15,0,0]:textattr
  35.     IF (t:=OpenDiskFont(tattr))=NIL THEN Raise(ER_FONT)
  36.     myfont:=OpenFont(tattr)
  37.     IF (ps:=OpenScreenTagList(NIL,          /* get ourselves a public screen */
  38.                                  [SA_TOP,0,
  39.                                   SA_DEPTH,3,             /*                         */
  40.                                   SA_FONT,tattr,              /*                         */
  41.                                   SA_DISPLAYID,SUPERLACE_KEY,          /* le champ SA_DISPLAYID           */
  42.                                   SA_PUBNAME,'3DScreen',
  43.                                   SA_TITLE,'3Dview v0.9 © 1994 NasGûl',
  44.                                   SA_PUBSIG,IF (screensig:=AllocSignal(-1))=NIL THEN Raise(ER_SCREENSIG) ELSE screensig,
  45.                                   SA_AUTOSCROLL,TRUE,
  46.                                   SA_TYPE,CUSTOMSCREEN+PUBLICSCREEN,
  47.                                   SA_OVERSCAN,OSCAN_TEXT,
  48.                                   SA_PENS,[0,1,1,2,1,3,1,0,2,1,2,1]:INT,    /* Répartition de couleurs WB 2.0 */
  49.                                   SA_DETAILPEN,1,            /* Detailpen */
  50.                                   SA_BLOCKPEN,2,             /* BlockPen  */
  51.                                   0,0]))=NIL THEN Raise(ER_SCREEN)
  52.     PubScreenStatus(ps,0)                 /* make it available */
  53.     IF (screen:=LockPubScreen('3DScreen'))=NIL THEN Raise(ER_LOCKSCREEN)
  54.     IF (visual:=GetVisualInfoA(screen,NIL))=NIL THEN Raise(ER_VISUAL)
  55.     offy:=screen.wbortop+Int(screen.rastport+58)-10
  56.     mybase.centrex:=Div(screen.width,2)
  57.     mybase.centrey:=Div(screen.height,2)
  58.     mybase.format:=SpDiv(SpFlt(screen.height),SpFlt(screen.width))
  59.     Raise(ER_NONE)
  60. EXCEPT
  61.     RETURN exception
  62. ENDPROC
  63. /**/
  64. /*"p_SetDownScreen() :Ferme l'écran."*/
  65. PROC p_SetDownScreen() 
  66.     IF visual THEN FreeVisualInfo(visual)
  67.     IF screen.firstwindow<>0
  68.         Wait(Shl(1,screensig))
  69.     ENDIF
  70.     IF myfont THEN CloseFont(myfont)
  71.     IF screensig THEN FreeSignal(screensig)
  72.     IF screen THEN UnlockPubScreen(NIL,screen)
  73.     IF screen THEN CloseScreen(screen)
  74. ENDPROC
  75. /**/
  76. /**/
  77. /*"View Window"*/
  78. /*"p_InitviewWindow() :Initialise les menus et gadgets."*/
  79. PROC p_InitviewWindow() HANDLE 
  80.     IF (view_menu:=CreateMenusA([1,0,get_3DView_string(DMENU_FILE),0,0,0,0,
  81.                                   2,0,get_3DView_string(DMENU_LOADNEW),'N',0,0,MENU_LOADNEW,
  82.                                   2,0,get_3DView_string(DMENU_LOADADD),'A',0,0,MENU_LOADADD,
  83.                                   2,0,NM_BARLABEL,0,0,0,0,
  84.                                   2,0,get_3DView_string(DMENU_SAVE_S),0,0,0,0,
  85.                                   3,0,get_3DView_string(DMENU_SAVE_OBJSELECT),0,1,6,MENU_SAVE_OBJSELECT,
  86.                                   3,0,get_3DView_string(DMENU_SAVE_OBJDESELECT),0,1,5,MENU_SAVE_OBJDESELECT,
  87.                                   3,0,get_3DView_string(DMENU_SAVE_ALLOBJ),0,$101,3,MENU_SAVE_OBJALL,
  88.                                   2,0,get_3DView_string(DMENU_SAVE_F),0,0,0,0,
  89.                                   3,0,get_3DView_string(DMENU_SAVE_DXF),0,$101,6,MENU_SAVE_DXF,
  90.                                   3,0,get_3DView_string(DMENU_SAVE_GEO),0,1,5,MENU_SAVE_GEO,
  91.                                   3,0,get_3DView_string(DMENU_SAVE_RAY),0,1,3,MENU_SAVE_RAY,
  92.                                   3,0,get_3DView_string(DMENU_SAVE_BIN),0,1,7,MENU_SAVE_BIN,
  93.                                   2,0,NM_BARLABEL,0,0,0,0,
  94.                                   2,0,get_3DView_string(DMENU_SAVEBASE),'S',0,0,MENU_SAVEBASE,
  95.                                   2,0,NM_BARLABEL,0,0,0,0,
  96.                                   2,0,get_3DView_string(DMENU_CONFIGURATION),'F',0,0,MENU_CONFIGURATION,
  97.                                   2,0,NM_BARLABEL,0,0,0,0,
  98.                                   2,0,get_3DView_string(DMENU_QUITTER),'Q',0,0,MENU_QUITTER,
  99.                                   1,0,get_3DView_string(DMENU_VUES),0,0,0,0,
  100.                                   2,0,get_3DView_string(DMENU_MODE),0,0,0,0,
  101.                                   3,0,get_3DView_string(DMENU_MODE_PTS),0,1,6,MENU_MODE_PTS,
  102.                                   3,0,get_3DView_string(DMENU_MODE_FCS),0,1,5,MENU_MODE_FCS,
  103.                                   3,0,get_3DView_string(DMENU_MODE_PTSFCS),0,$101,3,MENU_MODE_PTSFCS,
  104.                                   2,0,NM_BARLABEL,0,0,0,0,
  105.                                   2,0,get_3DView_string(DMENU_VUEEN),0,0,0,0,
  106.                                   3,0,get_3DView_string(DMENU_VUE_XOY),'0',$101,6,MENU_VUE_XOY,
  107.                                   3,0,get_3DView_string(DMENU_VUE_XOZ),'1',1,5,MENU_VUE_XOZ,
  108.                                   3,0,get_3DView_string(DMENU_VUE_YOZ),'3',1,3,MENU_VUE_YOZ,
  109.                                   2,0,NM_BARLABEL,0,0,0,0,
  110.                                   2,0,get_3DView_string(DMENU_COORD),0,0,0,0,
  111.                                   3,0,get_3DView_string(DMENU_COORD_INVX),'X',0,0,MENU_COORD_INVX,
  112.                                   3,0,get_3DView_string(DMENU_COORD_INVY),'Y',0,0,MENU_COORD_INVY,
  113.                                   3,0,get_3DView_string(DMENU_COORD_INVZ),'Z',0,0,MENU_COORD_INVZ,
  114.                                   2,0,NM_BARLABEL,0,0,0,0,
  115.                                   2,0,get_3DView_string(DMENU_ZOOM),0,0,0,0,
  116.                                   3,0,get_3DView_string(DMENU_ZOOM_P_PLUS),'+',0,0,MENU_ZOOM_P_PLUS,
  117.                                   3,0,get_3DView_string(DMENU_ZOOM_P_MOINS),'-',0,0,MENU_ZOOM_P_MOINS,
  118.                                   3,0,get_3DView_string(DMENU_ZOOM_G_PLUS),'*',0,0,MENU_ZOOM_G_PLUS,
  119.                                   3,0,get_3DView_string(DMENU_ZOOM_G_MOINS),'/',0,0,MENU_ZOOM_G_MOINS,
  120.                                   2,0,NM_BARLABEL,0,0,0,0,
  121.                                   2,0,get_3DView_string(DMENU_ROT),0,0,0,0,
  122.                                   3,0,get_3DView_string(DMENU_ROT_UP),'8',0,0,MENU_ROT_UP,
  123.                                   3,0,get_3DView_string(DMENU_ROT_DOWN),'2',0,0,MENU_ROT_DOWN,
  124.                                   3,0,get_3DView_string(DMENU_ROT_LEFT),'4',0,0,MENU_ROT_LEFT,
  125.                                   3,0,get_3DView_string(DMENU_ROT_RIGHT),'6',0,0,MENU_ROT_RIGHT,
  126.                                   3,0,get_3DView_string(DMENU_OBJCENTRE),'C',0,0,MENU_OBJCENTRE,
  127.                                   1,0,get_3DView_string(DMENU_OBJ),0,0,0,0,
  128.                                   2,0,get_3DView_string(DMENU_SELECTALL),'O',0,0,MENU_SELECTALL,
  129.                                   2,0,get_3DView_string(DMENU_DESELECTALL),'D',0,0,MENU_DESELECTALL,
  130.                                   2,0,get_3DView_string(DMENU_OBJSECTION),0,0,0,MENU_OBJSELECTION,
  131.                                   2,0,NM_BARLABEL,0,0,0,0,
  132.                                   2,0,get_3DView_string(DMENU_COLOR),0,0,0,0,
  133.                                   3,0,get_3DView_string(DMENU_COLORPTS),0,0,0,MENU_COUL_PTS,
  134.                                   3,0,get_3DView_string(DMENU_COLORFCS),0,0,0,MENU_COUL_FCS,
  135.                                   3,0,get_3DView_string(DMENU_COLOROBJSELECT),0,0,0,MENU_COUL_OBJSELECT,
  136.                                   3,0,get_3DView_string(DMENU_COLORBOUNDING),0,0,0,MENU_COUL_BOUNDING,
  137.                                    0,0,0,0,0,0,0]:newmenu,NIL))=NIL THEN Raise(ER_MENUS)
  138.     IF LayoutMenusA(view_menu,visual,NIL)=FALSE THEN Raise(ER_MENUS)
  139.     Raise(ER_NONE)
  140. EXCEPT
  141.     RETURN exception
  142. ENDPROC
  143. /**/
  144. /*"p_OpenviewWindow() :Ouvre la fenêtre."*/
  145. PROC p_OpenviewWindow() HANDLE 
  146.     IF (view_window:=OpenWindowTagList(NIL,
  147.                       [WA_LEFT,0,
  148.                        WA_TOP,0,
  149.                        WA_WIDTH,offx+screen.width,
  150.                        WA_HEIGHT,offy+screen.height,
  151.                        WA_IDCMP,$340+IDCMP_RAWKEY,
  152.                        WA_FLAGS,$1900,
  153.                        /*WA_GADGETS,view_glist,*/
  154.                        WA_CUSTOMSCREEN,screen,
  155.                        WA_TITLE,'ViewWindow',
  156.                        WA_SCREENTITLE,titlescreen,
  157.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  158.     IF SetMenuStrip(view_window,view_menu)=FALSE THEN Raise(ER_MENUS)
  159.     LoadRGB4(ViewPortAddress(view_window),mybase.palette,8)
  160.     Gt_RefreshWindow(view_window,NIL)
  161.     Raise(ER_NONE)
  162. EXCEPT
  163.     RETURN exception
  164. ENDPROC
  165. /**/
  166. /*"p_RemviewWindow() :Ferme la fenêtre et libère la mémoire."*/
  167. PROC p_RemviewWindow() 
  168.     IF view_window THEN CloseWindow(view_window)
  169.     IF view_menu THEN FreeMenus(view_menu)
  170.     IF view_glist THEN FreeGadgets(view_glist)
  171. ENDPROC
  172. /**/
  173. /**/
  174. /*"Config Window"*/
  175. /*"p_InitconfigWindow() :Initialise les menus et gadgets."*/
  176. PROC p_InitconfigWindow() HANDLE 
  177.     DEF g:PTR TO gadget
  178.     IF (g:=CreateContext({config_glist}))=NIL THEN Raise(ER_CONTEXT)
  179.     IF (g_fct3dpro:=CreateGadgetA(STRING_KIND,g,[offx+119,offy+39,153,19,'3Dpro',tattr,0,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  180.     IF (g_fctsculpt:=CreateGadgetA(STRING_KIND,g_fct3dpro,[offx+119,offy+62,153,19,'Sculpt',tattr,1,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  181.     IF (g_fctimagine:=CreateGadgetA(STRING_KIND,g_fctsculpt,[offx+119,offy+85,153,19,'Imagine',tattr,2,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  182.     IF (g_fctvertex:=CreateGadgetA(STRING_KIND,g_fctimagine,[offx+119,offy+108,153,19,'Vertex',tattr,3,1,visual,0]:newgadget,[GTST_STRING,'',GTST_MAXCHARS,100,GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  183.     IF (g_configok:=CreateGadgetA(BUTTON_KIND,g_fctvertex,[offx+20,offy+148,97,21,'Ok',tattr,4,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  184.     IF (g_configcancel:=CreateGadgetA(BUTTON_KIND,g_configok,[offx+220,offy+148,97,21,'Cancel',tattr,5,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  185.     Raise(ER_NONE)
  186. EXCEPT
  187.     RETURN exception
  188. ENDPROC
  189. /**/
  190. /*"p_OpenconfigWindow() :Ouvre la fenêtre."*/
  191. PROC p_OpenconfigWindow() HANDLE 
  192.     IF (config_window:=OpenWindowTagList(NIL,
  193.                       [WA_LEFT,267,
  194.                        WA_TOP,125,
  195.                        WA_WIDTH,offx+344,
  196.                        WA_HEIGHT,offy+184,
  197.                        WA_IDCMP,$37C,
  198.                        WA_FLAGS,$102E,
  199.                        WA_GADGETS,config_glist,
  200.                        WA_CUSTOMSCREEN,screen,
  201.                        WA_TITLE,'3DView Configuration.',
  202.                        WA_SCREENTITLE,titlescreen,
  203.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  204.     IF SetMenuStrip(config_window,view_menu)=FALSE THEN Raise(ER_MENUS)
  205.     p_RenderconfigWindow()
  206.     Raise(ER_NONE)
  207. EXCEPT
  208.     RETURN exception
  209. ENDPROC
  210. /**/
  211. /*"p_RenderconfigWindow() :Dessine les BevelBox et le texte."*/
  212. PROC p_RenderconfigWindow() 
  213.     DEF str[256]:STRING
  214.     StrCopy(str,p_FloatToString(mybase.fct3dpro),ALL)
  215.     Gt_SetGadgetAttrsA(g_fct3dpro,config_window,NIL,[GTST_STRING,str,0])
  216.     StrCopy(str,p_FloatToString(mybase.fctsculpt),ALL)
  217.     Gt_SetGadgetAttrsA(g_fctsculpt,config_window,NIL,[GTST_STRING,str,0])
  218.     StrCopy(str,p_FloatToString(mybase.fctimagine),ALL)
  219.     Gt_SetGadgetAttrsA(g_fctimagine,config_window,NIL,[GTST_STRING,str,0])
  220.     StrCopy(str,p_FloatToString(mybase.fctvertex),ALL)
  221.     Gt_SetGadgetAttrsA(g_fctvertex,config_window,NIL,[GTST_STRING,str,0])
  222.     DrawBevelBoxA(config_window.rport,offx+8,offy+140,329,41,[GT_VISUALINFO,visual,TAG_DONE])
  223.     DrawBevelBoxA(config_window.rport,offx+8,offy+20,329,117,[GT_VISUALINFO,visual,TAG_DONE])
  224.     RefreshGList(g_fct3dpro,config_window,NIL,-1)
  225.     Gt_RefreshWindow(config_window,NIL)
  226. ENDPROC
  227. /**/
  228. /*"p_RemconfigWindow() :Ferme la fenêtre et libère la mémoire."*/
  229. PROC p_RemconfigWindow() 
  230.     DEF mes
  231.     WHILE mes:=Gt_GetIMsg(config_window.userport) DO Gt_ReplyIMsg(mes)
  232.     IF config_window THEN CloseWindow(config_window)
  233.     IF config_glist THEN FreeGadgets(config_glist)
  234.     config_window:=NIL
  235. ENDPROC
  236. /**/
  237. /*"p_OpenTheConfigWindow() :Call p_InitconfigWindow() and p_OpenconfigWindow()."*/
  238. PROC p_OpenTheConfigWindow() HANDLE
  239.     DEF tm
  240.     IF (tm:=p_InitconfigWindow())<>ER_NONE THEN Raise(tm)
  241.     curobjnode:=0
  242.     IF (tm:=p_OpenconfigWindow())<>ER_NONE THEN Raise(tm)
  243.     Raise(ER_NONE)
  244. EXCEPT
  245.     RETURN exception
  246. ENDPROC
  247. /**/
  248. /**/
  249. /*"Info Window"*/
  250. /*"p_InitinfoWindow() :Initialise les menus et gadgets."*/
  251. PROC p_InitinfoWindow() HANDLE 
  252.     DEF g:PTR TO gadget
  253.     IF (g:=CreateContext({info_glist}))=NIL THEN Raise(ER_CONTEXT)
  254.     IF (g_infototalpts:=CreateGadgetA(NUMBER_KIND,g,[offx+576,offy+24,121,18,get_3DView_string(GAD_TOTALPTS),tattr,0,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  255.     IF (g_infototalfcs:=CreateGadgetA(NUMBER_KIND,g_infototalpts,[offx+576,offy+44,121,18,get_3DView_string(GAD_TOTALFCS),tattr,1,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  256.     IF (g_infototalobj:=CreateGadgetA(NUMBER_KIND,g_infototalfcs,[offx+576,offy+64,121,18,get_3DView_string(GAD_TOTALOBJ),tattr,2,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  257.     IF (g_infodelobj:=CreateGadgetA(BUTTON_KIND,g_infototalobj,[offx+8,offy+168,209,25,get_3DView_string(GAD_DELOBJ),tattr,3,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  258.     IF (g_objmode:=CreateGadgetA(MX_KIND,g_infodelobj,[offx+240,offy+21,17,9,'',tattr,4,2,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTMX_LABELS,[get_3DView_string(GAD_MX_NORMAL),get_3DView_string(GAD_MX_SELECT),get_3DView_string(GAD_MX_BOUNDED),get_3DView_string(GAD_MX_HIDE),0],GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  259.     IF (g_infonbrspts:=CreateGadgetA(NUMBER_KIND,g_objmode,[offx+332,offy+92,121,18,get_3DView_string(GAD_NBRSPTS),tattr,5,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  260.     IF (g_infonbrsfcs:=CreateGadgetA(NUMBER_KIND,g_infonbrspts,[offx+332,offy+112,121,18,get_3DView_string(GAD_NBRSFCS),tattr,6,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  261.     IF (g_infominx:=CreateGadgetA(NUMBER_KIND,g_infonbrsfcs,[offx+332,offy+132,121,18,get_3DView_string(GAD_MINX),tattr,7,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  262.     IF (g_infomaxx:=CreateGadgetA(NUMBER_KIND,g_infominx,[offx+332,offy+152,121,18,get_3DView_string(GAD_MAXX),tattr,8,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  263.     IF (g_infominy:=CreateGadgetA(NUMBER_KIND,g_infomaxx,[offx+332,offy+172,121,18,get_3DView_string(GAD_MINY),tattr,9,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  264.     IF (g_infomaxy:=CreateGadgetA(NUMBER_KIND,g_infominy,[offx+332,offy+192,121,18,get_3DView_string(GAD_MAXY),tattr,10,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  265.     IF (g_infominz:=CreateGadgetA(NUMBER_KIND,g_infomaxy,[offx+332,offy+212,121,18,get_3DView_string(GAD_MINZ),tattr,11,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  266.     IF (g_infomaxz:=CreateGadgetA(NUMBER_KIND,g_infominz,[offx+332,offy+232,121,18,get_3DView_string(GAD_MAXZ),tattr,12,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  267.     IF (g_infocenx:=CreateGadgetA(NUMBER_KIND,g_infomaxz,[offx+576,offy+92,121,18,get_3DView_string(GAD_CENTREX),tattr,13,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  268.     IF (g_infoceny:=CreateGadgetA(NUMBER_KIND,g_infocenx,[offx+576,offy+112,121,18,get_3DView_string(GAD_CENTREY),tattr,14,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  269.     IF (g_infocenz:=CreateGadgetA(NUMBER_KIND,g_infoceny,[offx+576,offy+132,121,18,get_3DView_string(GAD_CENTREZ),tattr,15,1,visual,0]:newgadget,[GTNM_BORDER,1,GTIN_NUMBER,00000000,0]))=NIL THEN Raise(ER_GADGET)
  270.     IF (g_infotype:=CreateGadgetA(TEXT_KIND,g_infocenz,[offx+28,offy+224,169,18,get_3DView_string(GAD_TYPE),tattr,16,4,visual,0]:newgadget,[GTTX_BORDER,1,GTTX_TEXT,'',0]))=NIL THEN Raise(ER_GADGET)
  271.     IF (g_infook:=CreateGadgetA(BUTTON_KIND,g_infotype,[offx+520,offy+196,141,21,get_3DView_string(GAD_OUI),tattr,17,16,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  272.     IF (g_infolist:=CreateGadgetA(LISTVIEW_KIND,g_infook,[offx+18,offy+32,193,129,'',tattr,18,0,visual,0]:newgadget,[GTLV_SHOWSELECTED,NIL,GTLV_LABELS,NIL,GT_UNDERSCORE,"_",TAG_DONE]))=NIL THEN Raise(ER_GADGET)
  273.     Raise(ER_NONE)
  274. EXCEPT
  275.     RETURN exception
  276. ENDPROC
  277. /**/
  278. /*"p_OpeninfoWindow() :Ouvre la fenêtre."*/
  279. PROC p_OpeninfoWindow() HANDLE 
  280.     IF (info_window:=OpenWindowTagList(NIL,
  281.                       [WA_LEFT,315,
  282.                        WA_TOP,121,
  283.                        WA_WIDTH,offx+713,
  284.                        WA_HEIGHT,offy+262,
  285.                        WA_IDCMP,$40037C,
  286.                        WA_FLAGS,$102E,
  287.                        WA_GADGETS,info_glist,
  288.                        WA_CUSTOMSCREEN,screen,
  289.                        WA_TITLE,'3DView Information.',
  290.                        WA_SCREENTITLE,titlescreen,
  291.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  292.     IF SetMenuStrip(info_window,view_menu)=FALSE THEN Raise(ER_MENUS)
  293.     p_RenderinfoWindow()
  294.     Raise(ER_NONE)
  295. EXCEPT
  296.     RETURN exception
  297. ENDPROC
  298. /**/
  299. /*"p_RenderinfoWindow() :Dessine les BevelsBox et le texte."*/
  300. PROC p_RenderinfoWindow() 
  301.     DEF renderobj:PTR TO object3d,totobj
  302.     DEF nbrspts[256]:STRING,mxdata=0
  303.     IF (p_EmptyList(mybase.objlist))<>-1
  304.         renderobj:=p_GetAdrNode(mybase.objlist,curobjnode)
  305.         totobj:=p_CountNodes(mybase.objlist)
  306.         dWriteF(['Current obj:\h ','Pts:\d ','Fcs:\d\n'],[renderobj,renderobj.nbrspts,renderobj.nbrsfcs])
  307.         nbrspts:=renderobj.nbrspts
  308.         IF renderobj.bounded=TRUE THEN mxdata:=2
  309.         IF renderobj.selected=TRUE THEN mxdata:=1
  310.         Gt_SetGadgetAttrsA(g_infolist,info_window,NIL,[GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curobjnode,GTLV_LABELS,mybase.objlist,TAG_DONE])
  311.         Gt_SetGadgetAttrsA(g_infototalpts,info_window,NIL,[GTNM_NUMBER,mybase.totalpts,0])
  312.         Gt_SetGadgetAttrsA(g_infototalfcs,info_window,NIL,[GTNM_NUMBER,mybase.totalfcs,0])
  313.         Gt_SetGadgetAttrsA(g_infototalobj,info_window,NIL,[GTNM_NUMBER,totobj,0])
  314.         Gt_SetGadgetAttrsA(g_objmode,info_window,NIL,[GTMX_ACTIVE,mxdata,0])
  315.         Gt_SetGadgetAttrsA(g_infonbrspts,info_window,NIL,[GTNM_NUMBER,renderobj.nbrspts,0])
  316.         Gt_SetGadgetAttrsA(g_infonbrsfcs,info_window,NIL,[GTNM_NUMBER,renderobj.nbrsfcs,0])
  317.         Gt_SetGadgetAttrsA(g_infominx,info_window,NIL,[GTNM_NUMBER,renderobj.objminx,0])
  318.         Gt_SetGadgetAttrsA(g_infomaxx,info_window,NIL,[GTNM_NUMBER,renderobj.objmaxx,0])
  319.         Gt_SetGadgetAttrsA(g_infominy,info_window,NIL,[GTNM_NUMBER,renderobj.objminy,0])
  320.         Gt_SetGadgetAttrsA(g_infomaxy,info_window,NIL,[GTNM_NUMBER,renderobj.objmaxy,0])
  321.         Gt_SetGadgetAttrsA(g_infominz,info_window,NIL,[GTNM_NUMBER,renderobj.objminz,0])
  322.         Gt_SetGadgetAttrsA(g_infomaxz,info_window,NIL,[GTNM_NUMBER,renderobj.objmaxz,0])
  323.         Gt_SetGadgetAttrsA(g_infominx,info_window,NIL,[GTNM_NUMBER,renderobj.objminx,0])
  324.         Gt_SetGadgetAttrsA(g_infocenx,info_window,NIL,[GTNM_NUMBER,renderobj.objcx,0])
  325.         Gt_SetGadgetAttrsA(g_infoceny,info_window,NIL,[GTNM_NUMBER,renderobj.objcy,0])
  326.         Gt_SetGadgetAttrsA(g_infocenz,info_window,NIL,[GTNM_NUMBER,renderobj.objcz,0])
  327.         Gt_SetGadgetAttrsA(g_infotype,info_window,NIL,[GTTX_TEXT,data_objtype[renderobj.typeobj],0])
  328.     ELSE
  329.         Gt_SetGadgetAttrsA(g_infolist,info_window,NIL,[GA_DISABLED,FALSE,GTLV_SHOWSELECTED,TRUE,GTLV_SELECTED,curobjnode,GTLV_LABELS,NIL,TAG_DONE])
  330.     ENDIF
  331.     DrawBevelBoxA(info_window.rport,offx+8,offy+196,209,61,[GT_VISUALINFO,visual,TAG_DONE])
  332.     DrawBevelBoxA(info_window.rport,offx+468,offy+20,237,65,[GT_VISUALINFO,visual,TAG_DONE])
  333.     DrawBevelBoxA(info_window.rport,offx+468,offy+88,237,65,[GT_VISUALINFO,visual,TAG_DONE])
  334.     DrawBevelBoxA(info_window.rport,offx+220,offy+20,245,65,[GT_VISUALINFO,visual,TAG_DONE])
  335.     DrawBevelBoxA(info_window.rport,offx+468,offy+156,237,101,[GT_VISUALINFO,visual,TAG_DONE])
  336.     DrawBevelBoxA(info_window.rport,offx+8,offy+20,209,145,[GT_VISUALINFO,visual,TAG_DONE])
  337.     DrawBevelBoxA(info_window.rport,offx+220,offy+88,245,169,[GT_VISUALINFO,visual,TAG_DONE])
  338.     RefreshGList(g_infototalpts,info_window,NIL,-1)
  339.     Gt_RefreshWindow(info_window,NIL)
  340. ENDPROC
  341. /**/
  342. /*"p_ReminfoWindow() :Ferme la fenêtre et libère la mémoire."*/
  343. PROC p_ReminfoWindow() 
  344.     DEF mes
  345.     WHILE mes:=Gt_GetIMsg(info_window.userport) DO Gt_ReplyIMsg(mes)
  346.     IF info_window THEN CloseWindow(info_window)
  347.     IF info_glist THEN FreeGadgets(info_glist)
  348.     info_window:=NIL
  349. ENDPROC
  350. /**/
  351. /*"p_OpenTheInfoWindow() :Call p_InitinfoWindow() and p_OpeninfoWindow()."*/
  352. PROC p_OpenTheInfoWindow() HANDLE
  353.     DEF tm
  354.     IF (tm:=p_InitinfoWindow())<>ER_NONE THEN Raise(tm)
  355.     curobjnode:=0
  356.     IF (tm:=p_OpeninfoWindow())<>ER_NONE THEN Raise(tm)
  357.     Raise(ER_NONE)
  358. EXCEPT
  359.     RETURN exception
  360. ENDPROC
  361. /**/
  362. /**/
  363.